import axios from "axios";

// 创建 axios 实例
const request = axios.create({
  // baseURL: "https://jsonplaceholder.typicode.com", // 根据实际情况修改
  baseURL: "/", // 根据实际情况修改
  timeout: 8000,
  withCredentials: true // 允许跨域请求携带 Cookie
  

});

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 可以在这里添加 token 等
    // config.headers.Authorization = "Bearer " + token;
    return config;
  },
  error => Promise.reject(error)
);



//使用 Cookie 认证方案，前端不需要配置 axios 路由守卫，只需：
//  1.登录后存储 authToken 到 Cookie（HttpOnly + Secure + SameSite）。 
// 2.使用 axios 拦截器全局处理 401 响应（跳转登录页）。
//  3.后端使用 Filter 拦截请求，检查 Cookie 中的 authToken。  
// 这样既能保证安全性，又能减少前端代码复杂度


// 响应拦截器
request.interceptors.response.use(
  response => response,
  error => {

    // 请求失败
    if (error.response && error.response.status === 401) {
      // debugger;
      // 如果返回 401，跳转登录页
      window.location.href = '/login';
    }
    // 其他错误继续抛出
    if (error.response && error.response.status === 403) {
      // 如果返回 403，提示没有权限
      alert("没有权限访问该资源");
    } else if (error.response && error.response.status === 404) {
      // 如果返回 404，提示资源未找到
      alert("资源未找到");
    } else if (error.response && error.response.status >= 500) {
      // 如果返回 500，提示服务器错误
      alert("服务器错误，请稍后再试");
    } else {
      // 其他错误处理
      console.error("请求错误:", error);
    }
    // 可以统一处理错误
    return Promise.reject(error);
  }
);

export default request;